iT邦幫忙

2025 iThome 鐵人賽

DAY 23
0
AI & Data

30 天入門常見的機器學習演算法系列 第 23

(Day 23) 深度學習中的優化方法 (Optimization in Deep Learning)

  • 分享至 

  • xImage
  •  

在前一篇,我們談到了深度學習中的正規化與正則化,重點在於如何避免過擬合並保持訓練穩定。然而,光是解決過擬合還不夠:在龐大的神經網路裡,我們還得面對另一個關鍵問題——如何有效率地找到參數的最佳解。

這就是「優化方法 (Optimization)」的核心任務。深度學習的訓練,本質上是透過梯度下降類方法來最小化損失函數。但在實務上,單純的梯度下降往往不足,因此衍生出各種改良版演算法。

問題背景: 為什麼需要不同優化方法?

在數學理論上,假設我們要最小化的目標函數是損失函數 $L(\theta)$,其參數更新規則來自於梯度下降:

$$
\theta_{t+1} = \theta_t - \eta \nabla_\theta L(\theta_t)
$$

其中:

  • $\theta_t$: 第 $t$ 次迭代的參數
  • $\eta$: 學習率 (Learning Rate)
  • $\nabla_\theta L(\theta_t)$: 在當前參數下的梯度

這個公式看似簡單,但實務上有幾個挑戰:

  • 鞍點與局部極小值
    • 高維空間裡,鞍點比局部極小值更常見,導致模型容易「卡住」。
  • 不同方向的梯度尺度差異
    • 某些維度梯度很大、某些維度很小,會造成「之字形震盪」或收斂緩慢。
  • 學習率的設計
    • 學習率太大,模型發散;太小,收斂速度慢甚至陷入次優解。
  • 非凸性
    • 深度網路的損失函數高度非凸,沒有單一「全局最優解」,需要演算法在複雜地形中找到足夠好的解。

因此,雖然梯度下降是核心,但各種優化方法的改進就是針對這些問題而來。

基本優化方法

批次梯度下降 (Batch Gradient Descent)

一次使用所有樣本計算梯度並更新參數。

  • 優點: 理論收斂穩定,梯度計算精確。
  • 缺點: 資料量大時,計算昂貴,幾乎不可行。

隨機梯度下降 (Stochastic Gradient Descent, SGD)

每次隨機抽取一筆樣本進行更新:

$$
\theta_{t+1} = \theta_t - \eta \nabla_\theta L(\theta_t; x^{(i)}, y^{(i)})
$$

  • 優點: 計算成本低,每次更新快速。
  • 缺點: 梯度估計方差大,收斂過程不穩定。

小批次梯度下降 (Mini-Batch Gradient Descent)

綜合兩者優點,常用一個小批次 (例如 32 或 128 筆樣本) 計算梯度。

  • 優點:
    • 在 GPU 上能高效運行
    • 平衡了收斂穩定性與計算效率
  • 缺點: 批次大小需要調整,太大接近 Batch,太小接近 SGD。

實務現況: Mini-Batch 是深度學習中幾乎唯一的選擇。

經典改良: Momentum 與 Nesterov

Momentum

模擬物理世界的「慣性」: 更新不僅依賴當前梯度,還加上之前梯度的指引。

$$
v_{t+1} = \gamma v_t + \eta \nabla_\theta L(\theta_t)
$$
$$
\theta_{t+1} = \theta_t - v_{t+1}
$$

其中 $\gamma$ 是動量係數 (常設為 0.9)。

  • 直觀理解: 像小球在山谷中滾動,能加速下降並減少震盪。

Nesterov Accelerated Gradient (NAG)

NAG 在更新前,先看「往動量方向走一步後的梯度」,再進行修正:

$$
v_{t+1} = \gamma v_t + \eta \nabla_\theta L(\theta_t - \gamma v_t)
$$
$$
\theta_{t+1} = \theta_t - v_{t+1}
$$

優點: 預先「探路」,避免過度衝過頭,收斂更快。

自適應學習率方法

為了解決「不同維度梯度大小不一致」的問題,自適應演算法讓每個參數都有自己的學習率。

Adagrad

透過累積歷史梯度平方,自動調整學習率:

$$
\theta_{t+1} = \theta_t - \frac{\eta}{\sqrt{G_t + \epsilon}} \nabla_\theta L(\theta_t)
$$

  • 優點: 對稀疏特徵表現好 (NLP 常用)。
  • 缺點: 學習率會隨時間單調遞減,最終趨近於 0。

RMSProp

對 Adagrad 改進:引入「指數加權平均」而非無限累積。

$$
E[g^2]t = \rho E[g^2]{t-1} + (1-\rho) g_t^2
$$

  • 優點: 避免學習率衰減過快,適合非平穩問題。

Adam (Adaptive Moment Estimation)

Adam 結合 Momentum 與 RMSProp 的優點。

  • 一方面計算梯度的一階動量 (類似 Momentum)。
  • 一方面計算梯度的二階動量 (類似 RMSProp)。

更新規則:

$$
m_t = \beta_1 m_{t-1} + (1-\beta_1) g_t
$$
$$
v_t = \beta_2 v_{t-1} + (1-\beta_2) g_t^2
$$
$$
\theta_{t+1} = \theta_t - \eta \frac{\hat{m}_t}{\sqrt{\hat{v}_t} + \epsilon}
$$

  • 優點: 幾乎是深度學習的「預設」優化器,收斂快,參數調整少。
  • 缺點: 在部分問題上,Adam 可能會收斂到次優解,不如 SGD + Momentum 的泛化能力。

實務建議

  1. 基線: 先用 Adam,觀察是否能快速收斂。
  2. 精煉: 若需更好泛化能力,考慮 SGD + Momentum。
  3. NLP / 稀疏特徵: 可考慮 Adagrad / AdamW。
  4. RNN / 時序: RMSProp、Adam 表現佳。
  5. 搭配學習率調整: 即便是最好的優化器,若學習率設計不當,也可能訓練失敗。

結語

優化方法是深度學習的核心基礎。從最早的 SGD,到 Momentum、RMSProp,再到幾乎成為預設的 Adam,每一次改良都在解決「如何在複雜地形中高效下降」這個問題。

可以這樣理解:

  • 優化器決定你能不能跑起來
  • 正則化決定你會不會跑偏

在進一步探討 RNN、LSTM、Transformer 等複雜架構之前,理解這些優化方法能讓我們對深度學習的訓練過程有更全面的把握。


上一篇
(Day 22) 深度學習中的正規化與正則化 (Regularization in Deep Learning)
下一篇
(Day 24) Adam 優化器 (Adaptive Moment Estimation)
系列文
30 天入門常見的機器學習演算法30
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言